#ifndef _FINDAMMO_H
#define _FINDAMMO_H

#include <global.h>
#include "DataStruct.h"
using namespace cv;
using namespace std;

//（后面可以改）ROI的高度固定从0到480
#define ROI_Y_UP 208
#define ROI_Y_DOWN 455

#define KP_17_42_CNT 69 //模板特征点的数量 KP42_CNT
#define KP42_CNT 56 //模板特征点的数量 KP42_CNT
extern DataStruct send_data;

class FindAmmo
{
public:
    FindAmmo();
    int getAmmo(Mat frame);

protected:
	vector<Point2f> Points(vector<KeyPoint> keypoints, Point2f bias);
    void ReleaseAll();
    void DetectNothing();
	vector<KeyPoint> kpts_17_42,kp42, //模板图片的特征点
                     kpts_tmp,kpts2; //当前图片的特征点
    Mat desc_17_42,desc42, //模板图片的特征点描述
        desc_tmp,desc2, //当前图片的特征点描述
        img2; //当前图片
    Ptr<AKAZE> akaze = AKAZE::create (); //特征点检测器
    vector<KeyPoint> matched_17_42,matched_tmp, matched2, inliers1, inliers2;  //匹配成功的特征点 和 符合变换矩阵的特征点
    vector< vector<DMatch> > nn_matches; //匹配连接
    vector<DMatch> inlier_matches; //符合变换矩阵的匹配连接
    BFMatcher matcher; //匹配器
    Rect ROI = Rect(Point(0, ROI_Y_UP), Point(640, ROI_Y_DOWN));
    int tol=0;

private:
};

#endif 
